let data = {
  name:　'tom',
  age: 19,
  sex: '1',
  address: 'china'
}

Object.keys(data).forEach((key)=>{
  observe(data, key, data[key])
})

function observe(data, key, value) {
  // let data, key, value = undefined
  // 形成了闭包 下面这个函数引用了其他函数的变量,延长了其变量的生命周期
  Object.defineProperty(data, key, {
    get() {
      console.log('读取了'+key+'属性:')
      return value
    },
    set(newVal) {
      console.log('修改了'+key+'属性:')
      value = newVal
    }
  })
}
